System supporting multiple partitions with differing translation formats

ABSTRACT

A system configuration is provided with multiple partitions that supports different types of address translation structure formats. The configuration may include partitions that use a single level of translation and those that use a nested level of translation. Further, differing types of translation structures may be used. The different partitions are supported by a single hypervisor.

This application is a continuation of co-pending U.S. Ser. No.13/646,779, entitled “SYSTEM SUPPORTING MULTIPLE PARTITIONS WITHDIFFERING TRANSLATION FORMATS,” filed Oct. 8, 2012, which is herebyincorporated herein by reference in its entirety.

BACKGROUND

One or more aspects relate, in general, to memory of a computingenvironment, and in particular, to facilitating access to the memory.

System configurations include physical memory used to store applicationsand data. The amount of physical memory is fixed and often inadequate tosupport the needs of users. Therefore, to provide additional memory orat least the appearance of additional memory, a memory managementtechnique, referred to as virtual memory, is utilized. Virtual memoryuses virtual addressing, which provides ranges of addresses that canappear to be much larger than the physical size of main memory.

To access main memory in a system configuration that includes virtualmemory, a memory access is requested that includes an effective address.The effective address is translated into a real address used to accessthe physical memory.

Translation is performed using an address translation technique. Severaladdress translation techniques are available. For instance, in PowerPCsystems offered by International Business Machines Corporation, aneffective address is translated to a corresponding real address by wayof page table entries found by selecting an effective segment identifier(ESID) table entry associated with the effective address, and using theentry to locate a group of page table entries by way of a hashingalgorithm. In a further example, in the z/Architecture, also offered byInternational Business Machines Corporation, an effective address istranslated to a corresponding real address by way of a hierarchy oftranslation tables. Translation tables are indexed by a portion of theeffective address to find the address of the next translation table ofthe hierarchy until a real (or absolute) address is obtained. Bothaddress translation techniques provide advantages to their respectiveoperating systems.

BRIEF SUMMARY

Shortcomings of the prior art are overcome and additional advantages areprovided through the provision of a method of facilitating memoryaccess. The method includes, for instance, providing a first partitionwithin a system configuration, the first partition configured to supportan operation system (OS) designed for a first address translationarchitecture, the first partition not supporting an OS designed for asecond address translation architecture; and providing a secondpartition within the system configuration, the second partitionconfigured to support the OS designed for the second address translationarchitecture, the second partition not supporting the OS designed forthe first address translation architecture, wherein the first addresstranslation architecture is structurally different from the secondaddress translation architecture.

Computer program products and systems relating to one or more aspectsare also described and may be claimed herein. Further, services relatingto one or more aspects are also described and may be claimed herein.

Additional features and advantages are realized through the techniquesdescribed herein. Other embodiments and aspects are described in detailherein and are considered a part of the claimed aspects.

BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS

One or more aspects are particularly pointed out and distinctly claimedas examples in the claims at the conclusion of the specification. Theforegoing and objects, features, and advantages of one or more aspectsare apparent from the following detailed description taken inconjunction with the accompanying drawings in which:

FIG. 1A depicts one example of a computing environment;

FIG. 1B depicts another example of a computing environment;

FIG. 2A illustrates an example of a high-level view of a virtual memorymapped to a physical memory using a hash page table technique;

FIG. 2B illustrates one example of a technique for generating a virtualaddress;

FIG. 2C depicts one example of a hash page table translation structure;

FIG. 3 depicts one example of a segment lookaside buffer, includingexample fields of a segment lookaside buffer entry;

FIG. 4A depicts one example of a page table;

FIG. 4B depicts one example of a page table entry;

FIG. 5A depicts one example of a hierarchical translation mechanism;

FIG. 5B depicts one example of indexing of high-level translationtables;

FIG. 6A depicts an example of a page table entry for the z/Architecture;

FIG. 6B depicts one example of a page table entry for the Power ISAarchitecture;

FIG. 7A depicts one example of the logic to select a translationmechanism;

FIG. 7B depicts one embodiment of the logic performed by a hypervisor tohandle a fault resulting from address translation;

FIG. 8A depicts an embodiment of the logic to initialize partitions;

FIG. 8B depicts one embodiment of the logic to dispatch a partition;

FIG. 8C depicts one embodiment of the logic to translate an addresswithin a configured and dispatched partition;

FIG. 9A depicts one example of a hypervisor supporting heterogeneousguests;

FIG. 9B depicts one embodiment of a hypervisor using an adjunctcomponent to facilitate managing an address translation fault;

FIG. 10A depicts one embodiment of paravirtualization logic used tomanage an address translation fault;

FIG. 10B depicts one embodiment of using an adjunct component tofacilitate management of an address translation fault;

FIG. 10C depicts one embodiment of further details of managing addresstranslation faults;

FIG. 11 depicts one embodiment of a radix translation mechanism;

FIG. 12 depicts one example of a radix on radix translation mechanism;

FIG. 13 depicts one example of a radix on hash page table translationmechanism;

FIG. 14A depicts one example of using a translation structure of onetype to point to a translation structure of another type to performaddress translation;

FIG. 14B depicts one embodiment of the logic to translate an addressusing multiple types of translation mechanisms;

FIG. 15 depicts one embodiment of a radix on offset translationmechanism;

FIG. 16A depicts one example of multiple translation mechanisms formultiple partitions;

FIG. 16B depicts one example of multiple translation mechanisms formultiple address ranges of a single partition;

FIG. 17 depicts one example of the logic to configure a system forselected translation mechanisms;

FIG. 18 depicts one example of multiple partitions that useheterogeneous translation formats sharing memory;

FIG. 19 depicts one example of a hash page table translation mechanism;

FIG. 20 depicts one example of a dynamic address translation (DAT)mechanism; and

FIG. 21 depicts one embodiment of a computer program productincorporating one or more aspects.

DETAILED DESCRIPTION

In one aspect, a system configuration is provided that has differenttypes of translation structures available to it for use in translatingmemory addresses from one format (e.g., an effective address, and inparticular, a virtual address associated therewith) to another format(e.g., a real address). Multiple translation structure formats (e.g.,multiple page table formats, such as hash page tables and hierarchicalpage tables) are concurrently supported in a system configuration. Inone embodiment, the different types of translation structures arestructurally different, and include, for instance, hash structures,hierarchical structures and/or offset structures, which are describedherein.

Further, in one aspect, a system configuration is provided that includesmultiple partitions that have differing translation mechanismsassociated therewith. For instance, one partition has associatedtherewith a single level translation mechanism for translating guestvirtual addresses to host physical addresses, and another partition hasa nested level translation mechanism for translating guest virtualaddresses to host physical addresses. The different translationmechanisms and partitions are supported by a single hypervisor. Thehypervisor is, for instance, a paravirtualized hypervisor. Thus, in oneaspect, faults, including host translation faults, associated withaddress translation of guest memory addresses in a single leveltranslation mechanism are managed, at least in part, by the guestoperating system. However, full virtualization is also provided forthose partitions using nested level translations of guest memoryaddresses. The host translation faults are handled entirely by the hostwithout (or independent of) assistance from the guest operating system.With full virtualization, the guest operating system is not involved inmanaging address translation faults resulting from host leveltranslations. To support full virtualization by a paravirtualizationhypervisor, an adjunct component is provided that facilitates handlingof address translation faults resulting from host level translations. Asused herein, an adjunct component is a helper component connected, addedor coupled to an entity, typically in an auxiliary manner, and notlimited to any specific adjunct architecture.

Computing environments of different architectures may incorporate anduse one or more aspects provided herein. For instance, environmentsbased on the PowerPC architecture, also referred to as Power ISA,offered by International Business Machines Corporation and described inthe Power ISA™ Version 2.06 Revision B specification, Jul. 23, 2010,incorporated herein by reference in its entirety, may include one ormore aspects, as well as computing environments of other architectures,such as the z/Architecture, offered by International Business MachinesCorporation, and described in z/Architecture—Principles of Operation,Publication No. SA22-7932-08, 9th Edition, August 2010, which is herebyincorporated herein by reference in its entirety.

One example of a computing environment to incorporate and use one ormore aspects is described with reference to FIG. 1A. In one example, acomputing environment 100 includes a processor (central processingunit—CPU) 102 that includes at least one memory management unit(MMU)/translation lookaside buffer (TLB) portion 104 and a cache 106.Processor 102 is communicatively coupled to a memory portion 108 havinga cache 110, and to an input/output (I/O) portion 112. I/O portion 112is communicatively coupled to external I/O devices 114 that may include,for example, data input devices, sensors and/or output devices, such asdisplays.

Memory management unit 104 is used in managing memory portion 108including facilitating access to the memory by providing addresstranslation. To improve address translation, the memory management unitutilizes a translation lookaside buffer (TLB). The TLB is a cache ofpreviously translated addresses. Thus, when a request is received for amemory access that includes an address to be translated, the TLB ischecked first. If the address and its translation are in the TLB, thenno translation is necessary. Otherwise, the received address istranslated using one of any number of translation techniques.

A further embodiment of a computing environment to incorporate and useone or more aspects of the present invention is depicted in FIG. 1B. Inthis example, a computing environment 150 includes a server 152 thatincludes, for instance, one or more virtual machines 154, one or morecentral processors (e.g., central processing units) 156, at least onehypervisor 158, and an input/output subsystem 160. The virtual machinesand hypervisor are included in memory 162.

In this embodiment, each virtual machine is capable of hosting a guestoperating system 168 and may be executing one or more applications 170.An operating system or application running in a virtual machine appearsto have access to a full complete system, but in reality, only a portionof it is available.

Central processors 156 (e.g., central processing units) are physicalprocessor resources that are assignable to a virtual machine. Forinstance, virtual machine 154 includes one or more logical processors,each of which represents all or a share of a physical processor 156 thatmay be dynamically allocated to the virtual machine. Virtual machines154 are managed by hypervisor 158, such as PowerVM, offered byInternational Business Machines Corporation, as examples.

Central processor 156, like CPU 102, includes at least one MMU/TLBportion and at least one cache.

Input/output subsystem 160 directs the flow of information betweendevices and memory (also referred to herein as main memory or mainstorage). It is coupled to the server in that it can be part of theserver or separate therefrom. The I/O subsystem relieves the centralprocessors of the task of communicating directly with the I/O devicescoupled to the server and permits data processing to proceedconcurrently with I/O processing.

Further details regarding the physical memory used by either system,such as memory 108 or memory 162, and access thereto are described withreference to FIG. 2A. As is known, physical memory is of a defined sizeand in order to have the physical memory appear larger than it is,virtual memory is utilized. One example of a high-level view of virtualmemory 201 mapped to a physical memory 203 (such as memory 108, 162) isdepicted in FIG. 2A. In this example, the mapping from virtual memory toreal memory is via a hash page table (HPT) technique 205 to locate pagetable entries (PTEs), as used by, for example, Power ISA. In thisexample, programs only use sections A and B of the virtual memory. Eachsegment of the virtual memory is mapped to a segment ID (SID) entry 207identified by an effective segment ID (ESID) (ESIDs for B and ESIDs forA included). An “effective address” 204 used by the program selects anSID entry, which includes the ESID value, as well as a virtual segmentID (VSID) 214 value. The VSID value represents the high-order bits of avirtual address to be used by hashing algorithm 205 to search the hashpage table. A hashed value based on the VSID is used to locate a pagetable entry (PTE). The page table entry includes an address 213 of apage of physical memory 203.

FIG. 2B illustrates an example of a technique for generating a virtualaddress 202 for hashing. In this regard, an effective address 204 isreceived in, for instance, a memory management unit of a processor.Effective address 204 includes an effective segment identifier (ESID)field 206, a page field 208 and byte offset field 210. The ESID field isused to locate an entry in a segment lookaside buffer (SLB) 212, whichis a cache of recently accessed segment ID entries. In particular, theSLB is searched for an entry with a value of ESID 206 of the effectiveaddress 204. The entry with the ESID 206 includes an associated virtualsegment identifier (VSID) 214, as well as other information, asdescribed below. The associated VSID is used to generate virtual address202, which includes VSID 214; and page 208 and byte 210 from theeffective address 204. Virtual address 202 is used to obtain a realaddress used to access physical memory in the memory system. In thisdisclosure, the terms physical memory, real memory, system memory andabsolute memory are used interchangeably to refer to the main storageaccessible to a processor.

FIG. 2C illustrates an example of a hash page table (HPT) translationstructure used by Power ISA. ESID portion 206 of an effective address(EA) 204 is used to locate an entry in SLB 212. The entry includes aVSID field 214. The value of VSID field 214 and a portion of EA 204(page.byte) are hashed 230 to produce a hash value that is used tolocate a page table entry (PTE) group 252 in a hash page table (HPT)250. Page table entries 253 of PTE group 252 are searched to locate acorresponding PTE having a field matching a value of amost-significant-portion of the VSID. When a corresponding PTE is found,the address (e.g., real address) of the physical memory page in the PTEis used to access physical memory. In order to improve performance, oncea PTE entry is found, the page portion 208 of EA 204 and the address ofthe physical memory page found in the PTE are stored in TLB 254, suchthat further accesses to the same EA page will “hit” in TLB 254 andavoid the PTE search. The page table is located by a page table originaddress provided by the processor.

Further details regarding a segment lookaside buffer and a page tableare described with reference to FIGS. 3 and 4A-4B. Referring initiallyto FIG. 3, a segment lookaside buffer (SLB) 212 specifies the mappingbetween effective segment IDs (ESIDs) and virtual segment IDs (VSIDs).The number of SLB entries (SLBE) in an SLB is implementation dependent,and in one example, includes at least 32 entries. In one example,segment lookaside buffer 212 includes a plurality of SLB entries 300,and each SLB entry 300 maps one ESID 302 to one VSID 308. In oneexample, SLBE 300 includes the following fields:

-   -   Effective segment ID (ESID) 302 (bits 0-35);    -   Entry valid indicator (V) 304 (bit 36) which indicates whether        the entry is valid (V=1) or invalid (V=0);    -   Segment sized selector (B) 306 (bits 37-38), which has the        following meaning, in one example: 0b00-256 Megabytes (MB)        (s=28), 0b01-1 Terabyte (TB) (s=40), 0b10-256 TB (s=48), and        0b11-reserved;    -   Virtual segment ID (VSID) 308 (bits 39-88);    -   Supervisor (privileged) state storage key (K_(s)) 310 (bit 89);    -   Problem state storage key (K_(p)) 312 (bit 90);    -   No-execute segment if N=1 indicator (N) 314 (bit 91);    -   Virtual page size selector bit 0 (L) 316 (bit 92);    -   Class indicator (C) 318 (bit 93);    -   Virtual page size selector bits 1:2 (LP) 322 (bits 95-96); and    -   Radix segment indicator (RS) 326 (bit 99), which, in one        example, 0 indicates disabled and 1 indicates enabled. When        RS=1, the virtual address used for the hash page table search        has the lowest S (encoded in SLBE_(B)) number of bits set to        zero.

In one embodiment, instructions cannot be executed from a no-execute(N=1) segment. Segments may contain a mixture of page sizes. The L andLP bits specify the base virtual page size that the segment may contain.The SLB_(L∥LP) encodings are those shown below, in one example:

encoding base page size 0b000  4 KB 0b101 64 KB additional values 2^(b)bytes, where b > 12 and b may differ among encoding values,where the “additional values” are implementation-dependent, as are thecorresponding base virtual page sizes. The values that are not supportedby a given implementation are reserved in that implementation.

The base virtual page size also referred to as the base page size is thesmallest virtual page size for the segment. The base virtual page sizeis 2^(b) bytes. The actual virtual page size (also referred to as theactual page size or virtual page size) is specified by PTE_(L∥LP).

The Class field is used in conjunction with the SLB Invalidate Entry(SLBIE) and SLB Invalidate All (SLBIA) instructions. Class refers to agrouping of SLB entries and implementation-specific lookasideinformation so that only entries in a certain group need be invalidatedand others might be preserved. The class value assigned to animplementation-specific lookaside entry derived from an SLB entry is tomatch the class value of that SLB entry. The class value assigned to animplementation-specific lookaside entry that is not derived from an SLBentry (such as real mode address translations) is 0.

Software is to ensure that the SLB contains at most one entry thattranslates a given instruction effective address. An attempt to createan SLB entry that violates this requirement may cause a machine check.

As described herein, at least one field of the SLB is used to access apage table, and in particular, a specific page table entry. Furtherinformation regarding a page table and page table entries is describedwith reference to FIGS. 4A-4B. In this example, the page table and itscorresponding entries are for the Power ISA architecture; however, otherpage tables and entries may be used for other architectures.

Referring initially to FIG. 4A, a page table 400 includes one or morepage table entries 402. As one example, page table 400 is a hash pagetable (HPT), which is a variable-sized data structure that specifies themapping between virtual page numbers (VPN) and real page numbers (RPN),where the real page number of a real page is, for instance, bits 0:47 ofthe address of the first byte in the real page. The hash page table sizecan be any size 2^(n) bytes where 18≦n≦46. The hash page table is to belocated in storage having the storage control attributes that are usedfor implicit accesses to it. In one embodiment, the starting address isto be a multiple of its size unless the implementation supports aserver.relaxed page table alignment category, in which case its startingaddress is a multiple of 2¹⁸ bytes, as an example.

In one example, the hash page table contains page table entry groups(PTEGs). A page table entry group contains, for instance, eight pagetable entries of 16 bytes each; each page table entry group is thus 128bytes long. PTEGs are entry points for searches of the page table.

Further details of a page table entry are described with reference toFIG. 4B. Each page table entry 402 maps one virtual number to one realpage number. As an example for the Power ISA architecture, a page tableentry includes the following:

Dword Bit(s) Name Description 0 0:1 B (404) Segment Size 0b00 - 256 MB;0b01 - 1 TB; 0b10 - 256 TB; 0b11 - reserved  2:56 AVA (406) AbbreviatedVirtual Address 57:60 SW (408) Available for software use 61 L (410)Virtual page size 0b0 - 4 KB 0b1 - greater than 4 KB (large page) 62 H(412) Hash function identifier 63 V (414) Entry valid (V = 1) or invalid(V = 0) 1  0 PP (416) Page Protection bit 0  1 / Reserved 2:3 Key (420)KEY bits 0:1  4:43 ARPN (422) Abbreviated Real Page Number 44:51 LP(424) Large page size selector  4:51 RTABORG (426) Virtualized realaddress of Radix Table (when SLBE_(RS) = 1 or VRMASD_(RS) = 1) 52:54 Key(428) KEY bits 2:4 55 R (430) Reference bit 56 C (432) Change bit 57:60WIMG (434) Storage control bits 61 N (436) No-execute page if N = 162:63 PP (438) Page Protection bits 1:2

Further details regarding one implementation of page tables and pagetable entries are described in Power ISA™ Version 2.06 Revision Bspecification, Jul. 23, 2010, offered by International Business MachinesCorporation and incorporated herein by reference in its entirety.

The use of a hash page table to translate addresses is only one exampleof a translation technique. Other address translation schemes, includingthose that use a hierarchy of translation tables, are described below,as well as in the following publications: z/Architecture—Principles ofOperation, Publication No. SA22-7932-08, 9th Edition, August 2010, andIntel Itanium Architecture Software Developer's Manual Volume 2: SystemArchitecture, Document Number: 245318-005, each hereby incorporatedherein by reference in its entirety. In one example, for thez/Architecture, the hierarchy of tables is referred to as dynamicaddress translation (DAT) tables; and for Power ISA, the tables arereferred to as radix tables.

One example of a hierarchical translation table translation mechanism isdescribed with reference to FIG. 5A. In this example, translation tables504 are provided for translating addresses of virtual memory 502, thoughonly regions A and B are to be used, in this example, to real addresses.The origin of the highest order translation table of the hierarchicaltranslation tables 504, is provided, for example, by a control register(CR3) 506. An effective address 508 is used to index into each table ofthe hierarchical translation tables 504 to determine an origin addressof the next table until, for example, a page table entry (PTE) having anaddress 509 of a page of physical memory 510 is located. In one examplein which the translation mechanism is DAT, the effective address is avirtual address having a plurality of indices used to index into thetranslation tables.

FIG. 5B shows one example in which the highest level translation tableof the hierarchy is “indexed” by the high portion 508 a of an effectiveaddress 508 to locate a Table 1 entry 512 a that is used to locate thenext translation table (Table 2). That is, entry 512 a includes anorigin address of Table 2. Similarly, a next portion 508 b of theeffective address 508 is used to index into Table 2 to find a Table 2entry 512 b having the origin address of Table 3. A next portion of theeffective address 508 c is used to index into Table 3 to find a Table 3entry 512 c having an origin address of a Page Table 514 a. A nextportion 508 d of the effective address 508 is used to index into PageTable 514 a to locate a page table entry 512 d having the address of aphysical memory page 516. The origin of the hierarchy of translationtables, in one embodiment, may include a table selector field fordetermining which of the hierarchy of translation tables, the originapplies. Thus, the translation may require only a subset of thehierarchy (wherein an effective address is limited to include apredetermined number of most significant bits having a zero value). Atranslation using fewer tables will be faster than one using moretables.

The page table entry located by traversing the hierarchical page tablesincludes various information including at least a portion of a realaddress used to access the physical memory. The format and informationincluded in the page table entry depends on the architecture of thesystem configuration and/or the specific type of translation.

In one example in which the address translation is the DAT translationof the z/Architecture, a page table entry 600 includes the following, asdepicted in FIG. 6A:

-   -   Page-Frame Real Address (PFRA) (602): Bits 0-51 provide the        leftmost bits of a real storage address. When these bits are        concatenated with the 12-bit byte index field of the virtual        address on the right, a 64-bit real address is provided;    -   Page-Invalid bit 604 (I): Bit 53 controls whether the page        associated with the page table entry is available. When the bit        is zero, address translation proceeds by using the page table        entry. When the bit is one, the page table entry is not to be        used for translation;    -   DAT-Protection Bit (P) 606: Bit 54 controls whether store        accesses can be made in the page. This protection mechanism is        in addition to the key-controlled-protection and        low-address-protection mechanisms. The bit has no effect on        fetch accesses; and    -   Change-Recording Override (CO) 608: When enhanced DAT does not        apply, bit 55 of the page-table entry is to contain zero;        otherwise, a translation-specification exception is recognized        as part of the execution of an instruction using that entry for        address translation. When enhanced DAT applies and a segment        table entry (STE) format control is zero, bit 55 of the        page-table entry is the change-recording override for the page.

As a further example in which the address translation is the radixtranslation of Power ISA, a page table entry includes the followingfields, as depicted in FIG. 6B. The format of this page table entryincludes at least some fields similar to the fields of the page tableentry obtained using the hash technique for Power ISA. In one example,page table entry 650 includes:

Bits Name Description  0 N (652) No-execute page if N = 1  1 PP (654)Page Protections 0 2-6 Key (656) KEY bits 0:4  7-51 AA (658) AbbreviatedAddress (concatenated with twelve zeros) 52-54 SO (660) Available forsoftware 55 G (662) Guarded 56 L (664) Leaf 0 - is Page Directory Entry(PDE) (0-1, 52-55, 57-62 ignored) 1 - is Page Table Entry (PTE) 57 C(666) Changed 58 R (668) Reference 59 I (670) Cache Inhibited 60 W (672)Writethrough 61-62 PP (674) Page Protections 1:2 63 V (676) Valid EntryIndicator

In accordance with one aspect, a system configuration is provided withdifferent types of address translation structures for use in translatingaddresses. As examples, one type uses a hierarchical data structure(e.g., a radix structure), and another type uses a hash data structure.Other and/or different types of structures may also be used, including,for instance, a combination of a hierarchical and a hash structure, oran offset structure, as examples. Further, in one example, the type oftranslation structure to be used for a particular translation isselectable.

One embodiment of the logic to select from a plurality of translationmechanisms to translate an address is described with reference to FIG.7A. In this example, the environment is a virtualized environment havingone or more guests (e.g., guest operating systems executing withinpartitions) supported by a host (e.g., a host machine including a hostoperating system and/or a hypervisor), and the address being translatedis a guest virtual address (obtained based on an effective address) to ahost physical address (a.k.a., host real address). In one embodiment,hardware of the environment (e.g., the MMU) is used to perform the logicof FIG. 7A, unless otherwise noted. In another embodiment, hardwareand/or firmware is used to perform the logic. As used herein, firmwareincludes, e.g., the microcode, millicode and/or macrocode of theprocessor. It includes, for instance, the hardware-level instructionsand/or data structures used in implementation of higher level machinecode. In one embodiment, it includes, for instance, proprietary codethat is typically delivered as microcode that includes trusted softwareor microcode specific to the underlying hardware and controls operatingsystem access to the system hardware.

Referring to FIG. 7A, initially, the hardware within a partition (e.g.,MMU of a processor within the virtualized environment) receives a memoryaccess request which includes a memory address translation request foran effective address, STEP 700. The memory address request may be amemory operation to load/store, a memory operand in an instruction, aninstruction address to be accessed during an instruction fetch, a loadreal address, or a prefetch instruction, as examples.

Based on the effective address in the translation request, a guestvirtual address is obtained and translated within the partition to aguest physical address using a selected translation format, such as, forinstance, a radix translation, STEP 702. A determination is made as towhether a translation event has occurred based on the translation fromthe guest virtual address to the guest physical address, INQUIRY 704. Ifa translation event has occurred, then that event (e.g., radix tablemiss), along with the guest virtual address, is presented from thehardware to the operating system using an instruction storage interrupt(ISI) or data storage interrupt (DSI) depending on whether thetranslation that resulted in a fault corresponded to an instruction ordata access, STEP 706. However, if there was no translation event, thenthe guest virtual address has been translated to the guest physicaladdress.

Next, a determination is made as to the type of translation to beselected to translate the guest physical address to the host physicaladdress, INQUIRY 708. In the example herein, it is either a hierarchicaltranslation mechanism (e.g., radix) or a hash page table translationmechanism that is selected; however, in other embodiments, other typesof translation mechanisms may be selected, such as an offset mechanismor other types. In one embodiment, the selection of the translationmechanism is dependent on the type of hypervisor that is configuring thesystem for translation, and the preference of that hypervisor; and/orthe selection may be based on the condition of the memory. For instance,if host memory has little fragmentation or large pages, a radix or otherhierarchical translation mechanism may be selected; for heavilyfragmented host memory, a hash page table translation mechanism may beselected; and for static partitions, an offset translation mechanism maybe selected. Other selection criteria are also possible.

Further, in one embodiment, selection may be performed at various levelsof translation including, for instance, from guest virtual to guestphysical, and/or from guest physical to host physical, and eachselection is independent of the other. That is, the selection of aparticular structure at one level (e.g., guest level) has no bearing onthe selection at another level (e.g., host level).

The selection, in one example, is configured by the hypervisor for thesystem by setting one or more indicators in one or more controlregisters, other registers, or memory, subsequent to making theselection and prior to receiving a translation request. In anotherexample, the selection is made dynamically by, for instance, thehypervisor or operating system, at the time of the translation, and thatselection is provided to the hardware or firmware.

Continuing with INQUIRY 708, if a radix (or other hierarchical)translation is selected for the host translation, then the guestphysical address is translated to the host physical address using aradix (or other hierarchical) translation, STEP 710. However, if hashpage table translation has been selected, then the guest physicaladdress is translated to the host physical address using a hash pagetable translation, STEP 712. Other translation mechanisms may also beselected, although, not shown in this particular example.

If a translation event occurs during translation of the guest physicaladdress to the host physical address, INQUIRY 714, then that event isindicated to the hypervisor via a host instruction storage interrupt(HISI)/host data storage interrupt (HDSI), in which the guest's physicaladdress is specified, STEP 716. If a translation event has not beenindicated, then the guest physical address has been translated to thehost physical address, and the host physical address is usable for thememory access.

Should the hypervisor be interrupted via an HISI or HDSI, the hypervisorperforms certain processing, an example of which is depicted anddescribed with reference to FIG. 7B. Initially, the hypervisor receivesthe HISI/HDSI, STEP 760. Thereafter, in one embodiment, a determinationis made as to whether radix guest translation is enabled, INQUIRY 762.In one example, this is determined by an indicator in a control registeror other register. If radix guest translation is not enabled, then HPTevent handling for HPT memory translation is performed as usual, STEP764. For instance, the hypervisor reloads the HPT. Further, execution ofthe instruction that caused the HISI/HDSI is restarted, STEP 766.

Returning to INQUIRY 762, if radix guest translation is enabled, in oneembodiment, the partition fault address (e.g., the guest physicaladdress) to be translated is obtained by the operating system from thehardware, STEP 768. Further, a translation entry for that address isobtained from a memory map to load the host translation table, STEP 770.The translation entry that is obtained is installed in the hosttranslation table (e.g., HPT or radix, in a further embodiment), STEP772, and execution of the instruction having caused the HISI/HDSI isrestarted, STEP 774.

For example, in one embodiment, host translation is performed using anHPT structure. In accordance with this embodiment, further to STEP 768,a translation entry for that address is obtained from a memory map toload the HPT, STEP 770. In accordance with another embodiment and inanother execution, a host physical page has been paged out and is pagedin prior to installing a translation entry. The translation entry thatis obtained is installed in the HPT, STEP 772, and execution of theinstruction having caused the HISI/HDSI is restarted, STEP 774. Inanother embodiment, host translation is performed by a radix structure.In accordance with this embodiment, further to STEP 768, a translationfault is handled for a radix table, e.g., a translation entry for thataddress is obtained from a memory map to load the radix table, STEP 770.In accordance with another embodiment and in another execution, a hostphysical page has been paged out and is paged in prior to installing atranslation entry. The translation entry that is obtained is installedin the radix table, STEP 772, and execution of the instruction havingcaused the HISI/HDSI is restarted, STEP 774.

In one embodiment, multiple partitions of a guest/host systemconfiguration supported by a single central processing unit architecturemay be configured to use different address translation formats (e.g.,different guest formats). For instance, one guest is configured to use ahierarchical translation format (e.g., radix) for guest translations,while another guest is configured to use a hash translation format forguest translations. Further, the guests may use different hosttranslation formats. For instance, one guest may use a single level oftranslation, and thus, the same translation format used for the guesttranslation is used for the host translation. For instance, a hashtranslation format is used to translate a guest virtual address to ahost physical address. Further, another guest may use a nested level oftranslation, and thus, one format (e.g., radix) may be used to translatethe guest virtual address to a guest physical address, and another orthe same format (e.g., hash, offset, radix) may be used to translate theguest physical address to a host physical address. In one example, bothguests are supported by the same hypervisor.

Further details of one embodiment of configuring partitions for addresstranslation are described with reference to FIGS. 8A-8C. Referring toFIG. 8A, initially, a first partition is allocated by, for instance, thehypervisor, STEP 800. This includes setting aside memory in the centralprocessing unit for the partition, as well as system resources to beused by the operating system and/or applications of the partition.Thereafter, a configuration is created for the first partition, STEP802, including, for instance, indicating in a configuration table thetype of address translation format to be used by the partition for hostlevel translations (e.g., radix, hash, etc.) and/or the type ofpartition (e.g., single level or nested level translation). Thisconfiguration table may also include the translation format to be usedfor guest level translations. In a further embodiment, a partitionincludes a plurality of portions and each portion is assigned an addresstranslation mechanism. The address translation mechanism assigned to aportion is selectable and may be the same or different for each portion.These assignments are included in one or more configuration tables.

The above process is repeated for a second partition and any otherpartitions that are to be allocated. As shown, a second partition isallocated, STEP 804, and a configuration is created for the secondpartition, STEP 806. Again, other partitions may be allocated andconfigured.

In a further embodiment, the partition type and/or translation mechanismis selected at partition dispatch time, described below, via ahypervisor call. Further, a hypervisor call may be used to change thetype of partition or the selected translation mechanism.

Thereafter, one or more partitions are dispatched as described withreference to FIG. 8B. That is, partitions are provided time-slices inwhich to execute. Thus, in one embodiment, at a particular time, aselected partition is dispatched, STEP 830. For instance, it is assignedsystem resources to enable its operating system and applications to run.Further, the partition configuration table is accessed, STEP 832, andthe partition's configuration information obtained from theconfiguration table is stored in, for instance, one or more CPUconfiguration registers or a memory structure to be used, for instance,in address translations, STEP 834. This processing is performed for eachpartition to be dispatched.

Subsequent to configuring and dispatching a partition, addresstranslation may be provided for that partition. For instance, as shownin FIG. 8C, in one example, a partition address is generated, STEP 850.For instance, a guest virtual address is generated using an SLB (e.g.,in a single level translation mechanism), or a guest physical address isgenerated from a guest virtual address (e.g., in a nested leveltranslation mechanism) using a guest translation structure (e.g.,radix). Then, the partition configuration information is accessed toobtain a host translation technique and parameters to be used totranslate the guest address to a host physical address, STEP 852. Thegenerated virtual address is then translated via the indicated techniqueand retrieved parameters to obtain the host physical address, STEP 854.This address is used to access memory, STEP 856.

In one embodiment, multiple partitions are supported by a singlehypervisor, which is able to support paravirtualized partitions, as wellas fully virtualized partitions. As used herein, a paravirtualizedpartition is a partition in which the operating system communicates withthe hypervisor to handle address translation faults resulting from hostlevel translation. That is, the guest updates the host's addresstranslation tables; although, some information (such as, for example,the host physical address being used by the system to store a page) maybe missing and is to be provided by the hypervisor. In contrast, a fullyvirtualized partition is one in which the guest operating system isignorant of the host level translation. The operating system does notreceive fault indications and does not manage such faults correspondingto host translation. The term “fully” is used herein simply todistinguish from “paravirtualization”. In particular, a system may befully virtualized with respect to address translation in one partition,but not with respect to other system aspects (such as I/O operations).

The paravirtualized partitions, which use a single level of translationto translate a guest virtual address to a host physical address, and thefully virtualized partitions, which use a nested level of translation inwhich a guest virtual address is translated to a guest physical addresswithin the partition, and then the guest physical address is translatedto a host physical address, are supported, in one embodiment, by thesingle hypervisor. The hypervisor is of a particular kind, referred toherein as a paravirtualized hypervisor, but also supports fullvirtualization (e.g., without having to modify the hypervisor, in oneembodiment). This is further described below with reference to FIGS.9A-9B.

Referring initially to FIG. 9A, a system configuration 900 is depictedhaving heterogeneous guests 902 a, 902 b supported by a hypervisor 904running on system hardware 906. In this example, the hypervisor is aparavirtualized hypervisor in which guest 902 a, as an example, has theability to communicate with hypervisor 904 to translate an address froma guest virtual address to a host physical address. That is, the guestmanages, at least in part, the address space associated with the addressbeing translated. For instance, if there is an address translation fault(a.k.a., a miss) during host address translation, the operating system(e.g., AIX) is notified (e.g., by the hypervisor, firmware or hardware),and the operating system inserts the missing entry in the host addresstranslation table, although some information will be missing and is tobe filled in by the hypervisor. In one example, the address translationtable for guest 902 a is a hash page table 908.

Additionally, hypervisor 904 also supports guests 902 b. However, unlikeguest 902 a, guests 902 b use a multilevel (a.k.a., nested) translationin which a guest virtual address is first translated to a guest physicaladdress within the partition (e.g., using radix translation), and thenthe guest physical address is translated to the host physical addressduring host level translation using, for instance, radix translation,hash page table translation, etc. In this scenario, however, the guestsare unaware of the hypervisor and do not communicate with thehypervisor. In one aspect of this scenario, the guests are unaware ofthe hypervisor with respect to host translation operations and do notcommunicate with the hypervisor with respect to host translations, butmay be aware of the hypervisor with respect to other properties (e.g.,such as I/O).

Thus, in one embodiment, to enable the hypervisor to also support guests902 b, an adjunct component 950, as shown in FIG. 9B, is used. Theadjunct component allows hypervisor 904 to remain as a paravirtualizedhypervisor, but support full virtualization as desired by guests 902 b.Since guests 902 b are ignorant as to the translation provided by thehost, but the hypervisor is reliant on another entity, such as theoperating system, to handle a miss, should a miss 952 occur intranslating the guest physical address to the host physical address, anindication is presented to the partition, but it is the adjunctcomponent that receives the indication and handles the miss (e.g., onbehalf of the operating system). In one example, adjunct component 950uses a system HCALL, HENTER 954, to update the host translation tables.Adjunct component 950 obtains configuration information used to createstructures to be used to update the host translation tables.

Further details regarding various mechanisms for handling addresstranslation faults are described with reference to FIG. 10A-10C.Referring initially to FIG. 10A, one embodiment of the logic to managean address translation fault using a paravirtualized hypervisor isdescribed. In one embodiment, with a partition paravirtualizationinterface, the location in the host translation table and protectionattributes are determined by the guest. These attributes include, forinstance, guest virtual address, segment size, page size, K_(s), K_(p),pp, Key, etc. Translations are installed into, for instance, the HPTwith an HCALL interface. HENTER enters a guest virtual address to hostphysical address translation, and HREMOVE removes such a translation.

Referring to FIG. 10A, initially, a translation from a guest virtualaddress to a host physical address causes a miss in a host translationtable, such as a HPT, STEP 1000. An indication event is provided fromthe hardware or firmware to the hypervisor via, for instance, ahypervisor instruction storage interrupt (HISI)/hypervisor data storageinterrupt (HDSI), STEP 1002. In one embodiment, the hypervisordispatches the miss to the partition (e.g., guest operating system),STEP 1004, and the partition updates the translation structure, such asHPT, using, for instance, an HCALL, referred to as HENTER, STEP 1006.Thereafter, the execution of the instruction is resumed and processingis complete, STEP 1008. In one embodiment, the indication event isdirectly delivered to the partition, without intervention of thehypervisor, combining STEPs 1002 and 1004 into a single step, optionallyimplemented in hardware. In one aspect of an indication event to apartition, the indication event is an ISI or DSI exception.

One embodiment of the logic of using a full virtualization adjunctcomponent to handle a miss is described with reference to FIG. 10B.Initially, the adjunct component receives configuration information,such as the size of memory and the addresses to be associated with thatmemory, STEP 1020. The adjunct component initializes a table to trackmapping of the guest physical addresses to the host memory, STEP 1022.Additionally, the adjunct component allocates memory either immediatelyor on demand, STEP 1024. Then, should the adjunct component receive amiss notification for a host translation table, it handles that missnotification, STEP 1026.

Further details regarding handling the miss notification are describedwith reference to FIG. 10C. Initially, the adjunct component receivesthe miss notification, STEP 1050. For instance, the exception logic ofthe system configuration receives an HISI/HDSI and directs the exceptionto the adjunct component (instead of the operating system). The adjunctcomponent looks up the mapping table to determine the entry to installin the host translation structure, STEP 1052. If the entry is not found,INQUIRY 1054, then an error is indicated, STEP 1056. Otherwise, HENTERis used to install the translation in the host translation structure,STEP 1058. Control is then transferred to the operating system to resumeprocessing of the instruction, STEP 1060.

Further details regarding different types of translation structures,including a hierarchical translation structure, such as a radixtranslation structure, and variations thereof, such as a radix on radixtranslation structure (i.e., using a radix table for guest translationin conjunction with a radix table for host translation), and a radix onhash page table (HPT) translation structure (i.e., using a radix tablefor guest translation in conjunction with an HPT table for hosttranslation) are described below with reference to FIGS. 11-13.

Referring initially to FIG. 11, one embodiment of the logic to translatea virtual address to a physical address using radix translation isdescribed. As shown, a radix table origin stored in, for instance, aregister 1100 indicates the beginning of a radix translation structure1102. Radix translation structure 1102, also referred to as a radix pagetable (RTAB), is for instance, a hierarchical, variable sized datastructure that specifies the mapping between virtual page numbers andreal page numbers, virtual page numbers and virtualized real pagenumbers, or virtualized real page numbers and real page numbers, wherethe real page number of a real page is, for instance, bits 0-44 of theaddress of the first byte of the real page. The RTAB is located instorage having the storage control attributes that are used for implicitaccess to it. The starting address is aligned in one example to a 4Kboundary. The RTAB includes a series of 512-entry tables, in oneembodiment.

In one example, radix translation structure 1102 includes, for instance,a plurality of radix structures, including a level 4 page directory (PD)1102 a, a level 3 page directory 1102 b, a level 2 page directory 1102c, and a level 1 page table (PT) 1102 d. Each page directory and pagetable includes a plurality of entries, referred to herein as pagedirectory entries (PDEs) and page table entries (PTEs), respectively.(The L field of an entry indicates whether there are additional entriesto be used in the translation.) The structures are indexed into, in thisexample, using a page number 1110 generated from a segment offset 1112of the effective address.

To index into radix structure 1102, as one example, the first X (e.g.,9) bits of page number 1110 are used as an offset into PD 1102 a pointedto by radix table origin 1100. The contents of PD 1102 a provides anaddress of PD 1102 b, and the next X bits of page number 1110 are usedto index into PD 1102 b to obtain an address of PD 1102 c. Further, thenext X bits of page number 1110 are used to access PD 1102 c to obtainthe address of the page table 1102 d. The next X bits of page number1110 are used to access the selected PTE of PT 1102 d. The output of PTE1102 d combined with byte portion 1114 of segment offset 1112 creates aphysical address 1116, also known as a real address.

The above describes one embodiment of translating a virtual address to aphysical address using radix translation. However, in the situation inwhich the virtual address is a guest virtual address, additionalprocessing may be used to translate each guest address to acorresponding host address. One embodiment of this logic is describedwith reference to FIG. 12, which shows an example of a radix on radixtranslation mechanism. That is, radix is used for the guesttranslations, as well as the host translations.

Referring to FIG. 12, a radix on radix translation mechanism includes aradix guest structure 1202 and a radix host structure 1204. Radixtranslation structure 1202 is similar to radix structure 1102 of FIG. 11and includes a plurality of radix structures, including a level 4 PD1202 a, a level 3 PD 1202 b, a level 2 PD 1202 c, and a level 1 PT 1202d, each including a plurality of entries. Similarly, radix hoststructure 1204, which is repeatedly shown for clarity, also includes aplurality of radix structures including a level 4 PD, a level 3 PD, alevel 2 PD and a level 1 PT. A guest page table pointer 1200 (alsoreferred to as a virtual real address of a guest level 4 table) istranslated by radix host structure 1204 to provide a real address of theguest level 4 table of radix guest translation structure 1202. Forinstance, the bits of the virtual real address of the level 4 table areused to walk host radix structure 1204, as described above withreference to FIG. 11, to obtain a real address of level 4 PD 1202 a. Asan example, the first X (e.g., 9) bits of virtual real address 1200 areused to index into a level 4 PD of structure 1204 to obtain from itsselected entry an address of a level 3 PD of structure 1204. The next Xbits of virtual real address 1200 are used to index into the level 3 PDof structure 1204 to obtain an address of the level 2 PD of structure1204. The next X bits of address 1200 are used to index into the level 2PD of structure 1204 to obtain an address of the level 1 PT of structure1204, and the next X bits of address 1200 are used to index into thelevel 1 PT of structure 1204 to obtain a real address of level 4 PD 1202a.

Then, in guest structure 1202, the first X (e.g., 9) bits of theeffective address (not shown) to be translated are used to index intothe level 4 PD 1202 a to obtain a virtual real address of level 3 PD1202 b. This virtual address is translated into a real address of level3 PD 1202 b using radix host structure 1204, which is indexed into usingthe bits of the virtual real address of the level 3 PD, as describedabove. The second set of X bits of the effective address is then used toindex into PD 1202 b to obtain a virtual real address of level 2 PD 1202c. That address is then translated using host structure 1204 to obtain areal address of level 2 PD 1202 c. The third set of X bits of theeffective address is used to index into PD 1202 c to obtain a virtualreal address of PT 1202 d. The virtual real address is then translatedusing radix host structure 1204 to obtain a real address of level 1 PT1202 d. The next X bits of the effective address are used to index intoPT 1202 d to obtain a virtual real address. The virtual real address istranslated using radix host structure 1204, and the output of thattranslation combined with a byte offset of the effective address is ahost physical address 1206. In one example, using this type oftranslation, it takes 24 reads to translate an address, in the worstcase.

In addition to the above, a radix on hash page table (HPT) translationmechanism is provided, in which the guest translations are via a radixstructure and the host translations are via a hash page table structure.An example of a radix on hash page table translation is described withreference to FIG. 13. Referring to FIG. 13, a guest page table pointer1300 (also referred to as a virtual real address of level 4 table (1304a)) is input to a host hash page table 1302 to translate address 1300 toa real address of level 4 PD 1304 a of a guest radix translationstructure 1304. Similar to the radix structures described above, radixtranslation structure 1304 includes a plurality of radix translationstructures, including, for instance, a level 4 PD 1304 a, a level 3 PD1304 b, a level 2 PD 1304 c, and a level 1 PT 1304 d, and in this case,the real address of level 4 structure 1304 a, referred to as a level 4page directory (PD), is obtained from HPT 1302.

The first X (e.g., 9) bits of the effective address to be translated areused to index into PD 1304 a to obtain the pertinent contents. As ineach of these translations, the contents of the selected level 4 pagedirectory entry of PD 1304 a are checked to see if there are additionallevels to be searched (e.g., is L=0), and if so, the virtual realaddress of PD 1304 b is used to hash into HPT 1302. Based thereon, thereal address of a level 3 PD structure 1304 b is obtained. The next Xbits of the effective address are used to index into PD 1304 b and thisaccess provides a virtual real address of a level 2 structure 1304 c.This virtual address is used in hash structure 1302 to obtain a realaddress of structure 1304 c. The next X bits of the effective addressare used to index into PD 1304 c to obtain a virtual real address oflevel 1 PT 1304 d, which is used to access the HPT. The output of theHPT access is the real address of a level 1 table 1304 d, which is usedto obtain another virtual real address. Since implicitly L=1 as alllevels in the page table have been exhausted, this is the last table ofthe radix structure, and therefore, this entry is the page table entry.The next X bits of the effective address are used to index into the pagetable to provide the guest physical address. The guest physical addressis used to access the hash table. The output of the hash table combinedwith a byte offset of the effective address provides the host physicaladdress 1306 corresponding to the effective address being translated.

In one embodiment, the guest page table pointer (e.g., guest page tablepointer 1300; a.k.a., the virtual real address of the first table in thehierarchy of tables) is obtained using the hash table. That is, the hashtable, in this example, is used as an indirect pointer to the radixstructure. This is described with reference to FIG. 14A. As shown, inthis example, if SLBE_(RS)=1 (1400), a PTE (1402) found during a hashPTE search is an indirect PTE used to point to a hierarchical page table1404 that can be manipulated by non-hypervisor code. In this example,the hierarchical page table is a radix page table (RTAB) to be used by,for instance, the Power ISA architecture, along with the hash table. TheARPN and LP fields of the hash page table entry (located during a hashtranslation) are replaced by the RTABORG, which is the virtualized realaddress of the radix page table. That virtual real address is then inputinto the host translation structure (e.g., HPT) to obtain the realaddress of the radix translation structure. The radix translationstructure (e.g., page table) is used, in one example, to obtain avirtual real address (a.k.a., guest physical address) of physical memoryto be accessed. The virtual real address is then converted, in oneembodiment, to a host physical address via, for instance, a hashmechanism (see, e.g., FIG. 13) or a radix mechanism (see, e.g., FIG.12).

One embodiment of the logic associated with translating a memory addressusing a translation technique that includes multiple types oftranslation structures is described with reference to FIG. 14B. In thisexample, the environment is a virtualized environment having one or moreguests supported by a host, and the address being translated is a guestvirtual address (obtained based on an effective address) to a hostphysical address (a.k.a., host real address). Since this is a guest/hostenvironment, additional translation is performed to obtain the realaddress, as described herein.

Referring to FIG. 14B, initially, the hardware within a partition (e.g.,MMU of a processor of the virtualized environment) receives a memoryaccess request which includes a memory address translation request foran effective address, STEP 1420. The memory address request may be amemory operation to load/store, a memory operand in an instruction, aninstruction address to be accessed during instruction fetch, a load realaddress, or a prefetch instruction, as examples.

A determination is made as to whether multiple types of translation datastructures are to be used to translate the effective address of therequest to a real address, INQUIRY 1422. For instance, in thisparticular example, the SLBE associated with the address to betranslated (found using the ESID in the request) is checked to determineif the RS indicator of the SLBE is set to one. Since, in this example,the configuration is a guest/host configuration, the logical identifierof the guest partition is used to find the appropriate SLB, and the ESIDis used to locate the correct SLBE. If the RS indicator in the SLBE isnot set to one, then translation is performed in accordance with priorarchitecture translation schemes, STEP 1424. For instance, aconventional hash page table translation is used to translate thevirtual address to a physical address, as described below. Thereafter,the memory access instruction is completed using the translated address,STEP 1426.

Returning to INQUIRY 1422, if the indicator specifies that multipletypes of translation formats are to be used to translate the effectiveaddress of the request to a real address, then processing continues withobtaining the VSID from the SLBE, STEP 1430. The VSID is used to locatean entry in one type of table (e.g., the hash table) in order to obtainthe root of another type of table (e.g., a hierarchical table, such as aradix table). In particular, in one example, the VSID is used to createa canonical address used to index into the HPT to obtain the RTABORG. Acanonical address is an address created for a plurality of pages in asegment. That is, a particular segment includes a plurality of pagesthat share the same radix table. Therefore, the address used to indexinto HPT is to be the same for all those pages. In order to create thecanonical address, the low order address bits for all the addresses thatshare the same radix table are zeroed out (and in one embodiment anappropriate constant is added). For instance, the virtual addressobtained based on the effective address includes the VSID, and page andbyte offsets. The VSID is used (optionally, along with the constant) tocreate the canonical address. The canonical address is used to indexinto the HPT to obtain the origin (i.e., the virtual real address of thefirst table in the hierarchy of tables) of the particular radix table tobe used in translation.

A determination is made as to whether an HPT access event occurred forthe canonical HPT entry address while trying to find the radix baseaddress, INQUIRY 1432. For instance, was there a miss in the HPT tablein that the canonical address could not be located? If so, then a guesttranslation event is provided specifying the guest virtual address to betranslated, STEP 1434. For instance, an instruction storage interrupt(ISI) or data storage interrupt (DSI) depending on whether thetranslation that resulted in a fault corresponded to an instruction ordata access is provided from the hardware to the operating system; i.e.,the guest operating system. Optionally, a new exception typecorresponding to a radix table root look-up miss is indicated.Thereafter, the operating system performs corrective action, including,for instance, reloading the radix base in the HPT using a hypervisorcall, STEP 1436. For instance, the hypervisor is called to load themissing information into the HPT. Additionally, the operating systemrestarts the memory instruction, STEP 1438, and processing continueswith STEP 1420.

Returning to INQUIRY 1432, if there was not an HPT access event for thecanonical address, then translation continues with performing a walk ofthe radix table to obtain the guest physical address from the guestvirtual address, STEP 1439. The walk of the radix table uses the pageand byte offsets of the effective address similar to the processingdescribed with reference to FIG. 5B. Further, in one example, thetranslation from guest virtual address to guest physical address alsoincludes using the HPT. That is, since the radix table is stored in apartition (i.e., a guest), it has addresses that correspond to addresseswithin a partition that are to be translated to real addresses. So, asthe radix table is accessed, the HPT is used to translate those accessesto real addresses, as described herein.

Continuing with STEP 1439, should a translation event occur based on atranslation performed in STEP 1439, then the event is handled. If it isa radix event, INQUIRY 1440, then such event is indicated by using anISI/DSI to provide an indication of the event (e.g., radix table miss)to the operating system, STEP 1442. Further, the operating systemreloads the translation to the radix table, STEP 1444, and restarts thememory instruction, STEP 1446. Processing continues at STEP 1420.

Returning to INQUIRY 1440, if an HPT event occurred, then a translationevent is indicated via, for instance, a HISI/HDSI (hypervisor ISI/DSI)indicating the event, STEP 1450. Further, the hypervisor reloads theHPT, STEP 1452, and the hypervisor restarts the memory instruction, STEP1454. Processing returns to STEP 1420.

Returning to INQUIRY 1440, if there is not a translation event, then theguest physical address obtained from translating the radix table istranslated to a host physical address using, for instance, HPT, STEP1460. Again, if there is a translation event, INQUIRY 1462, thenprocessing continues with indicating the translation event at STEP 1464.Otherwise, the memory access instruction is completed using thetranslated address, STEP 1466.

Although, in the above example, a hash table is used to obtain theorigin of a radix table, and the hash table and the radix table are usedto translate the address, in other embodiments, other types ofstructures may be used to obtain the origin and/or to perform thetranslation.

In addition to, or in lieu of, the translation mechanisms describedabove, other translation mechanisms may be used. One example of anothertype of translation mechanism is a radix on offset mechanism, in which aradix guest translation mechanism is used in conjunction with a hosttranslation based on a real mode base and a real mode limit, an exampleof which is described with reference to FIG. 15.

In this example, translation is performed using a real mode offsetregister (RMOR) and a real mode limit selector (RMLS) 1502 and a radixstructure 1504. As described previously, radix structure 1504 includes,in this example, a level 4 PD 1504 a, a level 3 PD 1504 b, a level 2 PD1504 c and a level 1 PT 1504 d, each including a plurality of PDEs orPTEs. A guest page table pointer 1500 (a.k.a., a virtual real address ofPD 1504 a) is translated to a real address of PD 1504 a using a realmode offset register (RMOR) value and a real mode limit selector (RMLS).The RMOR is added to address 1500 and the result of the addition iscompared to RMLS. If it is less than the limit, in this example, thenthe result is used to access PD 1504 a of radix table 1504. The radixtable is walked, as described herein (e.g., using first X (e.g., 9) bitsof the effective address), to obtain from the selected PDE of PD 1504 aa virtual real address of PD 1504 b. The base and limit are used again,but this time with the virtual real address of PD 1504 b to obtain thereal address of PD 1504 b. Translation continues and when the selectedPTE of PT 1504 d is located, a guest physical address is obtained whichis translated using host structure 1502 to obtain an address that whenconcatenated with a byte offset of the effective address provides a hostphysical address to be used in translation.

In one embodiment, in which a guest/host configuration is provided, theparticular one or more translation structure formats to be used intranslating addresses of a given partition are selectable. In oneexample, the configuration includes a monitor (e.g., hypervisor, logicpartition monitor, virtual machine monitor, etc.) that has the abilityto select different translation structure formats for differentpartitions, as well as different translation structure formats fordifferent memory regions of a single partition. One example of thisscenario is depicted in FIG. 16A.

As shown in FIG. 16A, a system configuration includes a plurality ofpartitions 1600. Each partition 1600 includes, for instance, anoperating system and one or more applications 1602. Partitions 1600 aresupported by a monitor program 1604. As examples, monitor program 1604is a hypervisor running on system hardware or a virtual machine (VM)monitor (e.g., VMware) running on a host operating system running on topof system hardware. In one embodiment, each partition may be assignedits own VM monitor.

In accordance with an embodiment, monitor program 1604 selects for aparticular partition one or more address translation structure formatsto be used to translate a memory address from a guest physical addressto a host physical address. The selection may be the same or differentfor each partition. Further, the selection may be based on, forinstance, the translation formats available in the configuration, thetype of applications to be run, the condition of memory (e.g.,fragmentation), etc. In particular, the monitor program selects atranslation structure format based on the following:

-   -   1) Implementation Level of Processor: When a translation        mechanism is requested, but not available, another mechanism is        substituted. For instance, legacy support is provided to provide        support between schemes.    -   2) Configuration Override File: An override file includes        instructions to ignore certain configuration choices or to map        to alternative schemes. This is helpful in dealing with buggy        implementations or optimizations, etc.    -   3) Configuration File: The configuration file is specified that        indicates the particular format to be used for a partition.    -   4) OS Request: The operating system (OS) requests a specific        translation mode based on its applications, for a specific        region of memory or for all the memory.    -   5) Dynamic Optimizer/Application Characteristics: A dynamic        optimizer determines the best translation property based on        memory access characteristics. It may be a stand-alone component        or integrated in one or more of the hypervisor, operating system        or application (e.g., Just-in-Time).    -   6) Statically: A static preference for translation schemes based        on schemes available in an implementation. In one        implementation, when a system supports a newer translation        scheme, the newer translation scheme is selected transparently        for all partitions. In one implementation, when a system        supports a new translation scheme, the legacy translation scheme        is selected transparently for the partitions.

In addition to the above, address translation structure formats areselectable for different memory regions within a partition. Forinstance, as shown in FIG. 16B, a partition 1650 has assigned thereto aplurality of address ranges 1652 a . . . 1652 n. A monitor program 1654selects for each address range one or more translation structure formatsto be used for translating guest physical addresses to host physicaladdresses. The selection criteria is similar to that descried above forthe partitions.

One embodiment of the logic for selecting and configuring a system forselectable translation structure formats for partition portions (or fullpartitions) is described with reference to FIG. 17. Initially, a portion(e.g., address range) of a partition is selected, STEP 1700. Then, atranslation structure format (e.g., hierarchical, radix, hash, or offsetmechanism) is selected for the portion based on one or more of thecriteria described above, STEP 1702. The system is then configured withthe selection by, for instance, setting an indicator in a memorylocation or a register, STEP 1704. In another embodiment, the system isconfigured using an instruction that indicates the translation to beused, such as a Set Translation to n instruction, where n is aparticular translation mechanism. In at least one embodiment, multipleindicators are present representing multiple selections of translationschemes for supporting host translation for a partition. In at least onesuch embodiment, at least one of the multiple indicators specifies astart address of an address range, an end of an address range and atranslation scheme used. In at least one other embodiment, at least oneof the multiple indicators specifies an address range based on anaddress prefix and an implementation-specified or indicator-specifiedmask, and a translation scheme used.

In one embodiment, if the monitor is not running directly on thehardware but under a supervisor (e.g., operating system control or acontrol system), the monitor uses a hypervisor call (HCALL) or operatingsystem call to request the supervisor to configure the system. Asexamples, the call is made by accessing a memory location which causes atrap/notification to the supervisor, or an instruction is issued andinterrupted by the supervisor, possibly with hardware support, such as apriority protection scheme limiting access to certain instructions to ahigher privilege level of software.

Thereafter, if there are additional portions for which a translationformat is to be selected, INQUIRY 1706, processing continues to STEP1700. Otherwise, processing is complete. Similar processing is performedto select translation formats for full partitions, instead of or inaddition to, the partition portions.

In one aspect, a processor supports the concurrent operation of multiplepartitions on a single processor. In such an environment, in at leastone embodiment, each partition is enabled to support the selection of aseparate guest translation system independently of other partitions. Inone embodiment, this selection is made directly by the operating system(OS) using a hardware mechanism, such as a “set translation instruction”and/or writing to at least one control register and/or writing to atleast one memory location. In another embodiment, selection is performedby way of interacting with a hypervisor, either by having the hypervisorintercept and perform on behalf of the OS one of the describedmechanisms, or by performing an HCALL or other explicit communication tothe hypervisor.

In one aspect, a processor supports the concurrent operation of multipleguest translation processes for structurally different translationmechanisms. In accordance with such an embodiment, a first page tabletranslation technique operates on behalf of a first partition requestinga first guest address translation using a first set of configurationvalues corresponding to the first partition, and a second page tabletranslation technique operates on behalf of a second partitionrequesting a second guest address translation using a second set ofconfiguration values corresponding to the second partition.

In one aspect of an embodiment, the host translation schemes arestructurally similar for structurally dissimilar guest translationsystems. In one such embodiment, only one set of configurationmechanisms are present for a host translation system. In another aspectof an embodiment, the host translation schemes are structurallydissimilar for structurally dissimilar guest translation systems. In onesuch embodiment, multiple configuration mechanisms are present for ahost translation system.

In one aspect, a processor supports the concurrent operation of multiplepartitions on a single processor. In such an environment, in at leastone embodiment, each partition is enabled to support the selection of aseparate host translation system independently of other partitions. Inone embodiment, this selection is made directly by the hypervisor usinga hardware mechanism, such as a “set translation instruction” and/orwriting to at least one control register and/or writing to at least onememory location. In another embodiment, selection is performed by way ofinteracting with a control system, a controlling operating system, orother control program, either by having the control program interceptand perform on behalf of the hypervisor one of the described mechanisms,or by performing an call to the control system by the hypervisor.

In one aspect, a processor supports the concurrent operation of multiplehost translation processes for structurally different translationmechanisms. In accordance with such an embodiment, a first page tabletranslation technique operates on behalf of a first partition requestinga first host address translation using a first set of configurationvalues corresponding to the host translation of the first partition, anda second page table translation technique operates on behalf of a secondpartition requesting a second host address translation using a secondset of configuration values corresponding to the second partition.

Although, in one embodiment, settings herein have been described inreference to entire partitions, multiple portions of partitions can usestructurally dissimilar translation systems.

In one embodiment, partitions with differing translation structureformats are able to share memory. As shown in FIG. 18, a plurality ofpartitions 1800 share memory 1802. In this example, the partitions usestructurally different translation formats (e.g., one or more use a hashstructure and one or more use a hierarchical structure) to translateguest physical addresses to host physical addresses. Although thepartitions may use different structure formats, pages of memory canstill be shared between the partitions.

In another aspect, pages are shared between partitions when thepartitions use structurally different host translation systems.

In one embodiment, the hypervisor supporting the partitions manages theshared memory, including removing a page from the shared memory; storinga page of the memory in another memory, such as storage class memory;paging out a page of the memory; and/or compressing a page of thememory, as examples. Further, the hypervisor can determine that a pageof memory is duplicated in both partitions and remove one of them, sothat the remaining page is shared. As used herein, a page of memoryrefers to a unit of memory of a predefined size.

Additionally, the hypervisor may clone a partition to provide sharedpages of memory. This includes, for instance, creating a new partition,copying the configuration file of the partition being cloned, creating anew host translation table to be used for the cloned partition, and foreach page in the cloned partition, pointing to the respective page inthe original partition while indicating that the pages should becopy-on-write, allowing the partitions to proceed independently of oneanother.

With a copy-on-write function, if one partition wants to write to a pageof memory that is shared transparently, the page is set to read-onlyaccess by the hypervisor, and when an access violation indicating awrite to the subject page is indicated by memory access techniquesimplemented in the processor, the hypervisor gains control by way of anindication event. The hypervisor then creates a copy of the shared pagefor the partition requesting to modify its version of the shared page byway of a memory write to a transparently shared page, and makes thepartition's private copy of the formerly shared page writeable. Thehypervisor then restarts the instruction having caused the violation,and the instruction proceeds and writes to that page which is nowunshared and writeable. This is also supported, even when the partitionshave differing address translation architectures (e.g., differingaddress translation structure formats).

Described in detail above are aspects in which multiple types oftranslation structures are included in a configuration. In oneembodiment, it is selectable as to which translation mechanism(s) may beused to translate an effective address to a host real address. However,if the system configuration does not support such a feature or if itsupports that feature, as well as legacy translation techniques, thenlegacy translation is provided.

One embodiment of the logic of a legacy translation technique in which ahash page table is used is described with reference to FIG. 19.Initially, an address request is received that includes an effectiveaddress, STEP 1900. The effective address is used to generate a virtualaddress, STEP 1902. For instance, the ESID is used to locate an SLBE,which includes a VSID. The VSID combined with the page.byte of theeffective address provides the virtual address to be translated. Thus,the virtual address is created by address substitution (referred toherein as segmentation) and not using paging support. Thereafter, adetermination is made as to whether there is an SLB address generationevent, INQUIRY 1904. For instance, was there a miss in the SLB whenlooking for the ESID? If not, then the virtual address is translated toa real address using conventional HPT translation, STEP 1906. Adetermination is made as to whether there is a translation event,INQUIRY 1908. If there is no HPT translation event, then processing iscomplete, and the real address can be used to access memory.

Returning to INQUIRY 1908, if there is an HPT translation event, thenthe translation event is specified to either the operating system orhypervisor using, for instance, ISI/DSI or HISI/HDSI, STEP 1910. HPTevent processing is performed, including optionally performing paging,STEP 1912. The operating system or hypervisor restarts the instruction,STEP 1914, and the flow returns to STEP 1900.

Returning to INQUIRY 1904, if there is an SLB generation event, then anSLB event is indicated to the operating system, STEP 1920. Further, SLBevent processing is performed including, for instance, reloading the SLB(excluding paging), STEP 1922. The operating system restarts theinstruction, STEP 1924, and processing continues with STEP 1900.

A further legacy technique for translating memory addresses is describedwith reference to FIG. 20. This technique uses a hierarchicaltranslation mechanism. Initially, an address request is received, STEP2000. The address is translated using, for instance, DAT translation,STEP 2002, which is similar to the hierarchical translation describedherein. One example of an architecture that uses DAT translation is thez/Architecture, which is described in an IBM Publication entitled“z/Architecture—Principles of Operation,” Publication No. SA22-7932-08,9^(th) Edition, August 2010, which is hereby incorporated herein byreference in its entirety. Thereafter, a determination is made as towhether there was a DAT translation event, such as a miss, INQUIRY 2004.If not, then the address has been translated to a physical address, STEP2006, and processing is complete.

However, if there is a DAT translation event, INQUIRY 2004, then thetranslation event is either indicated to the operating system orhypervisor, STEP 2010. DAT event processing is performed in theoperating system or hypervisor; optionally, performing paging, STEP2012. Further, the operating system or the hypervisor restarts theinstruction, STEP 2014, and processing continues to STEP 2000.

Described in detail above is a configuration that includes multipletypes of translation structures (e.g., multiple types of paging datastructures) to translate an effective address to a real address. In oneexample, one type of structure is accessed to obtain an origin ofanother type of structure. Although examples of translation mechanismsare described, additional and/or different mechanisms may be used. Inone embodiment, it is selectable as to which translation mechanism(s)may be used to translate an effective address to a host real address. Inone example, a first address (e.g., a guest virtual address) istranslated to a second address (e.g., a guest physical address) using ascheme selected from, for instance, radix translation, otherhierarchical translation, segmentation (e.g., using SLB), hash pagetable or a combination of the above, as examples. The second address istranslated to a third address (e.g., a host physical address) using atranslation scheme selected from one or more of page level schemes(translation schemes other than offset mechanisms); radix mechanisms;other hierarchical mechanisms; hash mechanisms; or offset mechanisms, asexamples.

In one embodiment, the third address (e.g., host physical address)corresponds to an address executing in a hypervisor partition executingunder control of another level of virtualization. That is, the thirdaddress is yet another virtual address to be translated to a physicaladdress. The translation is performed as above, and the translationmechanisms are again independently selectable.

Further, in one embodiment, a guest/host configuration is provided inwhich multiple partitions have differing translation mechanismsassociated therewith. For instance, one partition has associatedtherewith a single level translation mechanism for translating guestvirtual addresses to host physical addresses, and another partition hasa nested level translation mechanism for translating guest virtualaddresses to host physical addresses. Additionally, in one embodiment,operating systems that support a single level of translation may firstgenerate a guest virtual address from an effective address using, forinstance, an SLB. In yet a further embodiment, a processor identifier oraddress space identifier might be used to further specify a guestvirtual address.

For nested level translation partitions, in one embodiment, thehypervisor creates a partition with a linear translated address spaceusing a hash page table or another host translation architecture. Thehost table input for a partition ranges from 0x0000 to 0xMAXX. Thistranslation is used as a second level of translation once a first levelof translation is performed in the guest from a guest virtual address toa guest physical address. In one embodiment, the partition is not usingHENTER/HREMOVE to manage replacements or updates to the host table.Instead, the hypervisor manages replacement of host table entriestransparently when entries need to be updated/replaced in the hosttable. For each guest physical address to host physical address range,the hypervisor maintains a mapping to the host physical address. When ahost table miss occurs, the hypervisor transparently loads the hosttranslation table.

Additionally, in one aspect, a configuration is provided that enables aparavirtualized hypervisor to support different types of partitions,including those that expect the hypervisor to provide fullvirtualization (e.g., partitions that use nested translations) and thosethat use paravirtualization (e.g., partitions that use single leveltranslation). An adjunct component is provided that installs the linearaddress space needed by a fully virtualized partition. It is packaged asa component that interacts with the hypervisor to install translationsneeded by a virtualized partition. The actual code can be included withthe hypervisor, partition firmware, or operating system, but issegregated and distinct from the hypervisor and/or the operating systemin terms of program logic. In embodiments, the adjunct component may runeither in hypervisor or operating system privilege. If packaged with thehypervisor, although separate therefrom, it still has certain securitytrustworthiness, and therefore, less security checks need to be madewhen transferring control to the adjunct component.

In one example, the adjunct component creates a linear translatedaddress space by allocating partition memory (e.g., using HPTs, or otherhost translation architecture). An address range input for a partitionranges from 0x0000 to 0xMAXX. This translation is used as a second levelof translation once a first level of translation is performed in theguest from a guest virtual address to a guest physical address. Theadjunct component uses HENTER to either pre-install translations, orinstall translations responsive to translation misses. The adjunctcomponent manages replacement of HPTs (or other structures)transparently when entries need to be updated/replaced in the HPT (orother structures). For each guest address range, the adjunct componentmaintains a mapping to a host physical address. When an HPT (or other)miss occurs, the adjunct component transparently to the operating systemloads the HPT (or other structure). To facilitate full-virtualizationsupport, the hypervisor uses an adjunct component that can be includedwith the hypervisor or with the partition, and the adjunct componenthandles a fault on behalf of the hypervisor and the unsuspectingpartition.

In one embodiment, in accordance with a VM monitor architecture, ahypervisor can use two different types of guest physical to hostphysical translations. For example, HPT may be selected for densetranslation areas (large contiguously mapped areas), and radix or otherhierarchical tables may be selected for scattered partitions, and toexploit locality without large contiguous areas. In accordance with oneor more aspects, when a monitor program manages multiple partitions, itcan select a translation mechanism for each one, or portions thereof,separately. When running under an operating system (OS) or under acontrol system, multiple instances of a monitor can executeindependently, each one selecting a translation system independently.When running under an operating system or control system, the monitormay not be able to configure a translation system directly, but mayperform a configuration request to the OS or control system. The OS willbe adapted to configure and support multiple translation systems.

In one embodiment, a system configuration is provided that includes afirst partition configured to support an operating system (OS) designedfor a first address translation architecture (e.g., using one type ofaddress translation structure formats), the first partition notsupporting an OS designed for a second address translation architecture(e.g., using another type of address translation structure formats); anda second partition configured to support the OS designed for the secondaddress translation architecture, the second partition not supportingthe OS designed for the first address translation architecture, whereinthe first address translation architecture is structurally differentfrom the second address translation architecture.

As will be appreciated by one skilled in the art, aspects of the presentinvention may be embodied as a system, method or computer programproduct. Accordingly, aspects of the present invention may take the formof an entirely hardware embodiment, an entirely software embodiment(including firmware, resident software, micro-code, etc.) or anembodiment combining software and hardware aspects that may allgenerally be referred to herein as a “circuit,” “module” or “system”.Furthermore, aspects of the present invention may take the form of acomputer program product embodied in one or more computer readablemedium(s) having computer readable program code embodied thereon.

Any combination of one or more computer readable medium(s) may beutilized. The computer readable medium may be a computer readable signalmedium or a computer readable storage medium. A computer readable signalmedium may include a propagated data signal with computer readableprogram code embodied therein, for example, in baseband or as part of acarrier wave. Such a propagated signal may take any of a variety offorms, including, but not limited to, electro-magnetic, optical or anysuitable combination thereof. A computer readable signal medium may beany computer readable medium that is not a computer readable storagemedium and that can communicate, propagate, or transport a program foruse by or in connection with an instruction execution system, apparatusor device.

A computer readable storage medium may be, for example, but not limitedto, an electronic, magnetic, optical, electromagnetic, infrared orsemiconductor system, apparatus, or device, or any suitable combinationof the foregoing. More specific examples (a non-exhaustive list) of thecomputer readable storage medium include the following: an electricalconnection having one or more wires, a portable computer diskette, ahard disk, a random access memory (RAM), a read-only memory (ROM), anerasable programmable read-only memory (EPROM or Flash memory), anoptical fiber, a portable compact disc read-only memory (CD-ROM), anoptical storage device, a magnetic storage device, or any suitablecombination of the foregoing. In the context of this document, acomputer readable storage medium may be any tangible medium that cancontain or store a program for use by or in connection with aninstruction execution system, apparatus, or device.

Referring now to FIG. 21, in one example, a computer program product2100 includes, for instance, one or more non-transitory computerreadable storage media 2102 to store computer readable program codemeans or logic 2104 thereon to provide and facilitate one or moreaspects of the present invention.

Program code embodied on a computer readable medium may be transmittedusing an appropriate medium, including but not limited to wireless,wireline, optical fiber cable, RF, etc., or any suitable combination ofthe foregoing.

Computer program code for carrying out operations for one or moreaspects may be written in any combination of one or more programminglanguages, including an object oriented programming language, such asJava, Smalltalk, C++ or the like, and conventional proceduralprogramming languages, such as the “C” programming language, assembleror similar programming languages. The program code may execute entirelyon the user's computer, partly on the user's computer, as a stand-alonesoftware package, partly on the user's computer and partly on a remotecomputer or entirely on the remote computer or server. In the latterscenario, the remote computer may be connected to the user's computerthrough any type of network, including a local area network (LAN) or awide area network (WAN), or the connection may be made to an externalcomputer (for example, through the Internet using an Internet ServiceProvider).

One or more aspects are described herein with reference to flowchartillustrations and/or block diagrams of methods, apparatus (systems) andcomputer program products according to embodiments of the invention. Itwill be understood that each block of the flowchart illustrations and/orblock diagrams, and combinations of blocks in the flowchartillustrations and/or block diagrams, can be implemented by computerprogram instructions. These computer program instructions may beprovided to a processor of a general purpose computer, special purposecomputer, or other programmable data processing apparatus to produce amachine, such that the instructions, which execute via the processor ofthe computer or other programmable data processing apparatus, createmeans for implementing the functions/acts specified in the flowchartand/or block diagram block or blocks.

These computer program instructions may also be stored in a computerreadable medium that can direct a computer, other programmable dataprocessing apparatus, or other devices to function in a particularmanner, such that the instructions stored in the computer readablemedium produce an article of manufacture including instructions whichimplement the function/act specified in the flowchart and/or blockdiagram block or blocks.

The computer program instructions may also be loaded onto a computer,other programmable data processing apparatus, or other devices to causea series of operational steps to be performed on the computer, otherprogrammable apparatus or other devices to produce a computerimplemented process such that the instructions which execute on thecomputer or other programmable apparatus provide processes forimplementing the functions/acts specified in the flowchart and/or blockdiagram block or blocks.

The flowchart and block diagrams in the figures illustrate thearchitecture, functionality, and operation of possible implementationsof systems, methods and computer program products according to variousembodiments of the present invention. In this regard, each block in theflowchart or block diagrams may represent a module, segment, or portionof code, which comprises one or more executable instructions forimplementing the specified logical function(s). It should also be notedthat, in some alternative implementations, the functions noted in theblock may occur out of the order noted in the figures. For example, twoblocks shown in succession may, in fact, be executed substantiallyconcurrently, or the blocks may sometimes be executed in the reverseorder, depending upon the functionality involved. It will also be notedthat each block of the block diagrams and/or flowchart illustration, andcombinations of blocks in the block diagrams and/or flowchartillustration, can be implemented by special purpose hardware-basedsystems that perform the specified functions or acts, or combinations ofspecial purpose hardware and computer instructions.

In addition to the above, one or more aspects may be provided, offered,deployed, managed, serviced, etc. by a service provider who offersmanagement of customer environments. For instance, the service providercan create, maintain, support, etc. computer code and/or a computerinfrastructure that performs one or more aspects of the presentinvention for one or more customers. In return, the service provider mayreceive payment from the customer under a subscription and/or feeagreement, as examples. Additionally or alternatively, the serviceprovider may receive payment from the sale of advertising content to oneor more third parties.

In one aspect, an application may be deployed for performing one or moreaspects of the present invention. As one example, the deploying of anapplication comprises providing computer infrastructure operable toperform one or more aspects of the present invention.

As a further aspect, a computing infrastructure may be deployedcomprising integrating computer readable code into a computing system,in which the code in combination with the computing system is capable ofperforming one or more aspects of the present invention.

As yet a further aspect, a process for integrating computinginfrastructure comprising integrating computer readable code into acomputer system may be provided. The computer system comprises acomputer readable medium, in which the computer medium comprises one ormore aspects of the present invention. The code in combination with thecomputer system is capable of performing one or more aspects of thepresent invention.

Although various embodiments are described above, these are onlyexamples. For example, computing environments of other architectures canincorporate and use one or more aspects of the present invention.Additionally, other types of translation structures may be used andother types of environments may benefit from one or more aspects.Additionally, each structure may have different fields and/or the fieldscan be of different sizes. Further, the number of bits used to indexinto a structure can be the same or different for each level, and/or foreach structure. Additionally, in another embodiment, a different type ofstructure (e.g., a hierarchical structure or other structure) may beused to find the base origin (i.e., virtual real address) of anotherstructure (e.g., a hash structure or other structure). Otherpossibilities exist. Further, one or more aspects may pertain to I/O.Many variations are possible.

Further, other types of computing environments can benefit from one ormore aspects. As an example, an environment may include an emulator(e.g., software or other emulation mechanisms), in which a particulararchitecture (including, for instance, instruction execution,architected functions, such as address translation, and architectedregisters) or a subset thereof is emulated (e.g., on a native computersystem having a processor and memory). In such an environment, one ormore emulation functions of the emulator can implement one or moreaspects of the present invention, even though a computer executing theemulator may have a different architecture than the capabilities beingemulated. As one example, in emulation mode, the specific instruction oroperation being emulated is decoded, and an appropriate emulationfunction is built to implement the individual instruction or operation.

In an emulation environment, a host computer includes, for instance, amemory to store instructions and data; an instruction fetch unit tofetch instructions from memory and to optionally, provide localbuffering for the fetched instruction; an instruction decode unit toreceive the fetched instructions and to determine the type ofinstructions that have been fetched; and an instruction execution unitto execute the instructions. Execution may include loading data into aregister from memory; storing data back to memory from a register; orperforming some type of arithmetic or logical operation, as determinedby the decode unit. In one example, each unit is implemented insoftware. For instance, the operations being performed by the units areimplemented as one or more subroutines within emulator software.

Further, a data processing system suitable for storing and/or executingprogram code is usable that includes at least one processor coupleddirectly or indirectly to memory elements through a system bus. Thememory elements include, for instance, local memory employed duringactual execution of the program code, bulk storage, and cache memorywhich provide temporary storage of at least some program code in orderto reduce the number of times code must be retrieved from bulk storageduring execution.

Input/Output or I/O devices (including, but not limited to, keyboards,displays, pointing devices, DASD, tape, CDs, DVDs, thumb drives andother memory media, etc.) can be coupled to the system either directlyor through intervening I/O controllers. Network adapters may also becoupled to the system to enable the data processing system to becomecoupled to other data processing systems or remote printers or storagedevices through intervening private or public networks. Modems, cablemodems, and Ethernet cards are just a few of the available types ofnetwork adapters.

The terminology used herein is for the purpose of describing particularembodiments only and is not intended to be limiting of the invention. Asused herein, the singular forms “a”, “an” and “the” are intended toinclude the plural forms as well, unless the context clearly indicatesotherwise. It will be further understood that the terms “comprises”and/or “comprising”, when used in this specification, specify thepresence of stated features, integers, steps, operations, elements,and/or components, but do not preclude the presence or addition of oneor more other features, integers, steps, operations, elements,components and/or groups thereof.

The corresponding structures, materials, acts, and equivalents of allmeans or step plus function elements in the claims below, if any, areintended to include any structure, material, or act for performing thefunction in combination with other claimed elements as specificallyclaimed. The description of the present invention has been presented forpurposes of illustration and description, but is not intended to beexhaustive or limited to the invention in the form disclosed. Manymodifications and variations will be apparent to those of ordinary skillin the art without departing from the scope and spirit of the invention.The embodiment was chosen and described in order to best explain variousaspects and the practical application, and to enable others of ordinaryskill in the art to understand the various embodiments with variousmodifications as are suited to the particular use contemplated.

What is claimed is:
 1. A method of facilitating memory access, saidmethod comprising: providing a first partition within a systemconfiguration, the first partition configured to support an operatingsystem (OS) designed for a first address translation architecture,wherein configuration of the first partition to support the OS designedfor the first address translation architecture is indicated in aconfiguration data structure, and wherein the first partition is notconfigured, as indicated in the configuration data structure, to supportan OS designed for a second address translation architecture; andproviding a second partition within the system configuration, the secondpartition configured to support the OS designed for the second addresstranslation architecture, the second partition not configured to supportthe OS designed for the first address translation architecture, whereinthe first address translation architecture is structurally differentfrom the second address translation architecture, and wherein the firstpartition is a paravirtualized partition in which a guest of the firstpartition assists in handling address translation faults correspondingto host translations, and the second partition is a virtualizedpartition in which handling of address translation faults correspondingto host translations is independent of assistance from a guest of thesecond partition.
 2. The method of claim 1, wherein the first addresstranslation architecture uses a hash structure and the second addresstranslation architecture uses a hierarchical table structure.
 3. Themethod of claim 1, wherein the first partition uses a single leveladdress translation mechanism for translating guest virtual addresses tohost physical addresses, and the second partition uses a nested leveladdress translation mechanism for translating guest virtual addresses tohost physical addresses.
 4. The method of claim 3, wherein the nestedlevel address translation mechanism includes a first translationstructure to translate a guest virtual address to a guest physicaladdress and a second translation structure to translate the guestphysical address to a host physical address.
 5. The method of claim 4,wherein the first translation structure comprises one of a hierarchicalstructure, a hash structure or an offset structure, and the secondtranslation structure comprises one of a hierarchical structure, a hashstructure or an offset structure.
 6. The method of claim 1, wherein thefirst partition and the second partition are supported by a singlehypervisor.
 7. The method of claim 1, further comprising sharing memoryby the first partition and the second partition, wherein the memory isshared by the first partition and the second partition which usestructurally different address translation architectures.
 8. The methodof claim 7, further comprising managing by a hypervisor supporting thefirst partition and the second partition the memory that is shared,wherein the managing includes at least one of: removing a page from thememory, storing a page of the memory in another form of memory, pagingout a page of the memory, or compressing a page of the memory.
 9. Themethod of claim 1, further comprising cloning one of the first partitionand the second partition to provide memory to be shared by multiplepartitions using structurally different address translationarchitectures.
 10. The method of claim 1, further comprising:identifying a page of memory that is the same in the first partition andthe second partition; and removing the page from one of the firstpartition and the second partition, wherein the page that remains isshared by the first partition and the second partition.
 11. The methodof claim 1, wherein the configuration data structure indicates at leastone of a type of address translation structure to be used for host leveltranslations or an indication of whether the first partition is to use asingle level translation or a nested level translation.